G Goroutine 协程(数以百万计)-任务
M Machine 内核线程(OS Thread) -工人 (OS 线程)
P Processor 执行上下文(逻辑处理器)-工作台(任务队列)
golang调度器调度
如果没有 G 可跑P 会去 全局队列或 别的 P 的队列偷任务(Work Stealing)
白色 未访问对象(可能是垃圾)
灰色 已访问但字段未扫描的对象(待处理)
黑色 已访问且字段也已扫描完的对象(活对象)
1.初始化阶段: 所有对象都标为白色。
2.根对象入灰: GC 从根对象(全局变量、栈上的变量等)开始,把它们标记为灰色,加入“灰色队列”。
3.标记阶段:
每次从灰色队列中取出一个对象:
直到灰色队列为空
4.清除阶段:
剩下白色的对象就是“不可达的垃圾”,回收掉。
主要是找标记已引用的对象,清掉未引用的对象
DTM (Distributed Transaction Manager) 是 Go 语言开发的轻量级分布式事务框架,支持 TCC、SAGA、XA、消息事务。
TCC(Try-Confirm-Cancel) 业务自定义三阶段逻辑 强一致性 / 可控最终一致 中等 中高 ✅ 支持自定义回滚 金融、下单、扣库存等需预留资源的场景
SAGA 正向链式调用 + 补偿(无锁) 最终一致 中 高 ✅ 补偿函数(逆操作) 电商、流程审批、跨服务资源变更
消息事务(事务消息) 本地事务 + MQ 消息(可靠发送) 最终一致 简单 高 ✅ 重试机制 异步事件通知、邮件发送、记账
XA(两阶段提交) 标准 2PC 协议,数据库驱动支持 强一致性 高 低 ✅ 自动回滚 银行、支付、主库一致性写入
事务屏障(Barrier) 幂等 + 空补偿 + 防悬挂机制 辅助机制 辅助 中高 ✅ 多模型可用 防止接口幂等性问题、支持重复提交